#include <stdio.h>

int main(int argc, char const *argv[])
{
    printf("Hello, World!\n");
    //输入十个数字
    int a[10];
    int i;
    for(i=0;i<10;i++){
        scanf("%d",&a[i]);
    }

    //用快速排序将十个数字排序
    quickSort(a,0,9);    //调用快速排序函数 

    //输出排序后的十个数字
    for(i=0;i<10;i++){
        printf("%d ",a[i]);
    }

    return 0;
}

//快速排序函数
void quickSort(int a[],int left,int right){
    if(left<right){    //如果左边索引小于右边索引
        int i=left,j=right,key=a[left];    //i,j为左右指针，key为基准值
        while(i<j){    //当i小于j时，进行循环
            while(i<j && a[j]>=key)    //从右边开始找小于key的数，并移动j指针    
                j--;
            if(i<j)    //如果i小于j，则交换a[i]和a[j]
                a[i++]=a[j];
            while(i<j && a[i]<=key)    //从左边开始找大于key的数，并移动i指针
                i++;
            if(i<j)    //如果i小于j，则交换a[i]和a[j]
                a[j--]=a[i];
        }
        a[i]=key;    //将基准值key放到i位置
        quickSort(a,left,i-1);    //递归调用左边的子数组
        quickSort(a,i+1,right);    //递归调用右边的子数组
    }
}   